package database.dao;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.sql.*;
import java.util.*;
/**
 * @category 数据库的增删改查
 * @author chenkai
 *
 */
public class MysqlCrud {	
	Connection conn=null;
	PreparedStatement pt=null;
	ResultSet rs=null;	
	/**
	 * @category 数据库的插入和更新操作
	 * @param sql String 数据库SQL语句
	 * @param parameter String[] 查询的限制条件
	 * @return flag boolean 操作成功返回true，否则为false
	 */
	@SuppressWarnings("finally")
	public boolean InsertAndUpdateData(String sql,String[]  parameter) {
		boolean flag=false;
		try {
			conn=DBConnection.getConnection();
			pt=conn.prepareStatement(sql);
			if(parameter!=null&&parameter.length>0) {
				for(int i=0;i<parameter.length;i++) {
					pt.setString(i+1, parameter[i]);
				}
			}
			int enter=0;
			enter=pt.executeUpdate();	
			if(enter==1) {
				flag=true;
			}
		} catch (Exception e) {
			// TODO: handle exception
			e.printStackTrace();
		}finally{	
			closemysql();
		}	
		return flag;
	}
	
	/**
	 * @category 数据库数据查询
	 * @param sql String 数据库查询语句
	 * @param parameter String[] 数据库查询约束条件
	 * @return lists List<Map> 返回一个List<Map>的对象
	 */
	public List<Map> SelectData(String sql,String[]  parameter) {
		List<Map> lists=new ArrayList<Map>();
		try {
			conn=DBConnection.getConnection();
			pt=conn.prepareStatement(sql);	
			if(parameter!=null&&parameter.length>0) {
				for(int i=0;i<parameter.length;i++) {
					pt.setString(i+1, parameter[i]);
				}
			}
			rs=pt.executeQuery();
			ResultSetMetaData rsm=rs.getMetaData();
			while(rs.next()) {
				Map<Integer,String> map=new HashMap<Integer, String>();
				for(int i=0;i<rsm.getColumnCount();i++) {
					map.put(i, rs.getString(i+1));
				}
				lists.add(map);			
			}			
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}finally{	
			closemysql();
		}
		return lists;
	}
	
	/**
	 * @category 数据库数据查询
	 * @param sql String 数据库查询语句
	 * @param parameter String[] 数据库查询约束条件
	 * @return lists List<Map> 返回一个List<Map>的对象
	 */
	public List<Map> SelectDataInt(String sql,Integer[]  parameter) {
		List<Map> lists=new ArrayList<Map>();
		try {
			conn=DBConnection.getConnection();
			pt=conn.prepareStatement(sql);	
			if(parameter!=null&&parameter.length>0) {
				
				for(int i=0;i<parameter.length;i++) {
					pt.setInt(i+1, parameter[i]);
				}
			}
			rs=pt.executeQuery();
			ResultSetMetaData rsm=rs.getMetaData();
			while(rs.next()) {
				Map<Integer,String> map=new HashMap<Integer, String>();
				for(int i=0;i<rsm.getColumnCount();i++) {
					map.put(i, rs.getString(i+1));
				}
				lists.add(map);			
			}			
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}finally{	
			closemysql();
		}
		return lists;
	}
	
	/**
	 * 
	 */
	public void closemysql() {
		if(rs!=null) {
			try {
				rs.close();
			} catch (SQLException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}
		if(pt!=null) {
			try {
				pt.close();
			} catch (SQLException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}
		if(conn!=null) {
			try {
				conn.close();
			} catch (SQLException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}	
	}
	//
	public static Map getPropertyValues(String path)
	{
		Map  values= null;
		values  = new HashMap();		
		Properties prop = new Properties();//属性集合对象 
		FileInputStream fis =null;
		try {
			fis = new FileInputStream(path);
			prop.load(fis);
			fis.close();// 关闭流 
			values.put("password", prop.getProperty("password"));
			values.put("ip", prop.getProperty("ip"));
			values.put("user", prop.getProperty("user"));
		} catch (FileNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}//属性文件流 
		catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}//将属性文件流装载到Properties对象中 
		
		
		return values;
		
	}
}
